package de.hypoport.einarbeitung.scrumspirit.view;

import javax.persistence.EntityManagerFactory;

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.link.ExternalLink;
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.markup.repeater.data.ListDataProvider;
import org.apache.wicket.spring.injection.annot.SpringBean;

import de.hypoport.einarbeitung.scrumspirit.beans.Mitarbeiter;
import de.hypoport.einarbeitung.scrumspirit.persistence.dao.MitarbeiterDao;

public class MitarbeiterListePage extends WebPage {


	transient MitarbeiterDao mitarbeiterDao;

	@SpringBean
	transient EntityManagerFactory entityManagerFactory;



	public MitarbeiterListePage(){


		mitarbeiterDao = new MitarbeiterDao();
		if (entityManagerFactory != null) {
			mitarbeiterDao.setEntityManager(entityManagerFactory
					.createEntityManager());
		}


		final DataView<Mitarbeiter> dataView = new DataView<Mitarbeiter>(
				"mitarbeiterdata", new ListDataProvider<Mitarbeiter>(
						mitarbeiterDao.findAll())) {
			private static final long serialVersionUID = -368813748228239748L;

			@Override
			public void populateItem(final Item<Mitarbeiter> item) {
				final Mitarbeiter mitarbeiter = item
						.getModelObject();
				item.add(new Label("id", mitarbeiter.getId().toString()));
				item.add(new Label("vorname", mitarbeiter.getVorname()
						.toString()));
				item.add(new Label("nachname", mitarbeiter.getNachname()
						.toString()));
				item.add(new ExternalLink("email", "mailto:"
						+ mitarbeiter.getEmail().toString(), mitarbeiter
						.getEmail().toString()));

				Form<Mitarbeiter> functionForm = new Form<Mitarbeiter>("functionForm");

				// wenn das Bild statisch ist, ist der normale "Button" besser als "ImageButton"
				Button deleteButton = new Button("deletebutton") {

					private static final long serialVersionUID = 7254323735478548744L;

					@Override
					public void onSubmit() {
					};


				};
				Button editButton = new Button("editbutton") {

					private static final long serialVersionUID = 5504938899699814674L;

					@Override
					public void onSubmit() {

						MitarbeiterEingabePage mitarbeiterEingabePage = new MitarbeiterEingabePage(
								item.getDefaultModel());
						setResponsePage(mitarbeiterEingabePage);

					};

				};

				functionForm.add(deleteButton);
				functionForm.add(editButton);
				item.add(functionForm);
			}
		};

		dataView.setItemsPerPage(10);

		add(new Label("IdLabel", "lf.Nr"));
		add(new Label("VornameLabel", "Vorname"));
		add(new Label("NachnameLabel", "Nachname"));
		add(new Label("EmailLabel", "Email"));
		add(new Label("EditLabel", "Funktionen"));

		add(dataView);

		add(new PagingNavigator("navigator", dataView));


	}


}
